созданием памяти занимает ос
симплексные - в одну сторону полудуплексные - в одну сторону
дуплексные - одновременно в две стороны могут передаваться
Для того, чтобы правильно организовать работу буфера есть
поток связи называют трубкой pipe, fifo
когда мы отправляет инфу сообщениями вся инфа делится на кусочки фикс. размера при передачи инфы между процессами , нужно продумать то , что канал связи должен быть надежным
нэрзед коды - кодирование по завершению процесса.
Есть у нас сообщение с правильной чек суммой
ввести массив А
А= А+В
С=А+С
вывести массив С
Ожидание вывода С
Нити исполнения - это процессы, одного процесса.
Нить 1 должна создать 2 нить.
нить помощника для исполнения задания
между нитями есть нить переключения контекста. Нить 2.
Нить А и Б.
Пусть нить 1
Ввести нить А.
в это время вторая нить цже посчитает сумму А и Б.
Пока она считает возвращаемся к первой.
переключения контекста в некоторых случаях мы можем только выиграть
Различают Ос поддерживающие нити на уровне ядра и на уровне библиотек. Мало ОС , которые поддерживают функции на уровне библиотек. (блокирование 1 нити приводит к блокированию всех нитей) алгоритмы синхронизации - interleaning, race condition.
Активность действия, которые нужно выполнить для получения результата
(определенной цели). могут быть как в программе, так и в жизни людей.
Активности бывают делимые и неделимые.
Состоят из операций делемых и неделимых.
неделимые называются -(атомарные)
Активность P с операциями и активность B.
При выполнении они могут чередоваться.
Чередование - это interleaning
Не всегда нам выгодно чередование, иногда нам необходим один и тот же результат. Если у нас операции не будут чередоваться 1 2
P:x=2 Q:x=3
y=x-1
y=x+1
(xy):(2,1)(3,4)
(xy): (2,3),(3,2)
Детерменирован набор всякий раз при псевдопараллельном исполнении для одного и того же набора входных данных дает одинаковые выходные данные. В противном случае такой набор называется недетерменированным.
При недетменированном наборе программ, говорят что он не race condition состояние гонки и состояние состязания.
механизм взаимоисключения- если 1 получил доступ , другой получить доступ не может Критические секции - суть состояит в том, что если я получила доступ к каким-то ресурсам я блокирую доступ к этим ресурсам. другие ресурсы ожидают освобождение ресурса.
часть программы исполнение которойможет привести к возникновению race condition для определенного набора программ, чтобы исключить эффект фона какому-то ресурсу необходимо организовать работу так, чтобы в каждый момент времени только один процесс мог находиться в своей критической секции связанной с этим ресурсом Критическую секцию можно описать с помощью цикла
while(some condition) {
entry section;
crition section;
exit section;
remainder section;
}
результат всегда будет один и тот же
программные алгоритмы организации взаимодействия процессов: мы отправляем прерывание
while (some condition) {
запрещать section;
разрешить прерывание;
remainder section;
}
флаги готовности , когда i - ый процесс, готов войти в критическую секцию, он присваивает ready i - значение равное 1, после выхода он сбрасывает значение в 0. Процесс не сбрасывает, если он уже готов.
while(some section){
ready[i] = 1;
while(ready[i+1]);
critied section;
ready[i] =0;
remainder section;
}
while(some section){
ready[i] = 1;
while(ready[i+1]);
critied section;
ready[i] =0;
remainder section;
}
пусть процессы одновременно произошли к выполнению пролога, после выполнения присваивания планировщик передал процессор
такая ситуация называетя тупиковой или d=0
1 процесс не может ввойти, потому что другой ждет они будут бесконечно долго друг друга ждать такая ситуация называется тупиковой.
Одна тупиковая ситуация может привести к зависанию тупиковой ситуации. Множество процессов находится в тупиковой ситуации.
Множество процессов находятся в тупиковой ситуации , если каждый процесс ожидает событие, которое может вызвать только друго процесс данного множества, т.к. оба процесса ожидают они не смогут уступить (зависание)
Безопасное состояние, которое не приведет к взаимоблокировке. Пример надежного состояния для системы с 3 пользователями: текущая ситуация такова,
Макс передача раздача | ||
---|---|---|
макс. потребность |
Ради ресурсов |
|
1 | 9 | 6 |
2 | 10 | 2 |
3 | 2 | 3 |
P - процесс
R - ресурс
R1ждет пока lock=0
Тупиковые ситуации можно обнаруживать с помощью построения графов.
самый простой способ выйти из тупика - убить процесс.
Завтра мы будем проходить симафоры (алгоритм обедающего философа)
семафоры
Завтра мы будем проходить симафоры (алгоритм обедающего философа)